/******************************************************************************
 *
 *	Fichier:			Fichiers.cpp
 *
 *	Function:		Voir .h	
 *
 *	Auteur:			Tristan Stérin
 *
 *	Copyright:		Copyright (c) 2010 <whomever>
 *						Tous droits réservés
 *	Notes:			
 *
 *
 *	
 *****************************************************************************/

#include "Fichiers.h"

/***********************************
Renvoit un path pour
un fichier quelquonque
2 fonctions.

@pathParametre : si le le path est un
path définit
@pathSpecial : si le path est spécial
@nom : nom du fichier
************************************/

char *getPath(int pathParametre, char nom[TAILLE_MAX_NOMS])
{
	std::string pathDefinitif;
	

	switch(pathParametre)
	{	
		case PATH::LOG:
			pathDefinitif = "";//Si c'est le path des logs
		break;
		
		case PATH::TILE:
			pathDefinitif = "";//Si c'est le path des tiles
		break;
		
		case PATH::MAP:
			pathDefinitif = "";//S c'est le path des maps
		break;
		
		case PATH::SON:
			pathDefinitif = "";//S c'est le path des maps
		break;
		
		case PATH::MUSIQUE:
			pathDefinitif = "";//S c'est le path des maps
		break;
		
		default:
		break;
	}
	
	pathDefinitif += nom;//On ajoute le nom au path

	return (char*)pathDefinitif.c_str();
}

char *getPath(char *pathSpecial, char nom[TAILLE_MAX_NOMS])
{
	std::string pathDefinitif;

	pathDefinitif = pathSpecial;//Si le path est définit
	
	pathDefinitif += nom;//On ajoute le nom au path
	
	return (char*)pathDefinitif.c_str();
}


/*******************
Constructeur
********************/

Fichier::Fichier()
{
}

/*******************
Ouverture d'un Fichier : 2 fonctions
@mode : si le mode à été définit à l'aide d'un des const du namespace MODE (Fichiers.h)
@modeDefinit : si le mode à été définit par l'utilisateur
@path : si le path utilisé est un path décrit par le namesapce PATH (fichiers.h)
@nom : nom du Fichier
@pathSpecial : si le path à été définit
********************/

bool Fichier::ouvrirFichier(char modeDefinit[4], char pathSpecial[TAILLE_MAX_NOMS], char *nom )
{
	std::string pathDefinitif, modeDefinitif;
	
	
	modeDefinitif = modeDefinit;//Mode définit
	
	pathDefinitif = pathSpecial;//Si le path est définit
	
	pathDefinitif += nom;//On ajoute le nom au path
	
	m_fichier = fopen(pathDefinitif.c_str(), modeDefinitif.c_str());//On ouvre le fichier
	
	//Si l'ouverture à échouée
	if(m_fichier == NULL)
	{
		printf("Impossible d'ouvrir le fichier de logs");
		return false;
	}
	return true;
}

bool Fichier::ouvrirFichier(int mode, int path, char *nom)
{
std::string pathDefinitif, modeDefinitif;
	
	switch(mode)
	{
		
		case MODE::LECTURE_SEULE:
			modeDefinitif = "r";//Lecture seule
		break;
		
		case MODE::ECRITURE_SEULE:
			modeDefinitif = "w";//écriture seule
		break;
		
		case MODE::L_E_S:
			modeDefinitif = "w+";//lecture et écriture avec suppression de contenu
		break;
		
		case MODE::L_E:
			modeDefinitif = "a+";//Lecture/écriture sans supression;
		break;
		
		default:
		break;
	}
	
	switch(path)
	{	
		case PATH::LOG:
			pathDefinitif = "";//Si c'est le path des logs
		break;
		
		case PATH::TILE:
			pathDefinitif = "";//Si c'est le path des tiles
		break;
		
		case PATH::MAP:
			pathDefinitif = "";//S c'est le path des maps
		break;
		
		default:
		break;
	}
	
	pathDefinitif += nom;//On ajoute le nom au path

	m_fichier = fopen(pathDefinitif.c_str(), modeDefinitif.c_str());//On ouvre le fichier
	
	//Si l'ouverture à échouée
	if(m_fichier == NULL)
	{
		printf("Impossible d'ouvrir le fichier de logs");
		return false;
	}

	
	return true;
}

/****************************
Ecrire dans le fichier
@message : message à écrire
****************************/

void Fichier::ecrireMessage(char message[TAILLE_MAX_MESSAGES])
{
	fprintf(m_fichier, "%s", message);
}

/****************************
Ecrit l'heure a côté d'un log
@h : heure
@m : minute
@s : seconde
****************************/

void Fichier::ecrireDate(int h, int m, int s)
{
	fprintf(m_fichier, "[%dh:%dmin:%dsec] ", h, m, s);
}

/****************************
Obtention du pointeur fichier
****************************/

FILE* Fichier::getFILE()
{
	return m_fichier;
}

/****************************
Obtention du nom du fichier
****************************/

char* Fichier::getNom()
{
	return m_nom;
}

/*******************
Fermeture du fichier
*******************/

void Fichier::fermerFichier()
{
	fclose(m_fichier);
}